package br.facet.dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import br.facet.pojo.Estado;
import br.facet.utils.HibernateUtils;

public class EstadoDAO {

	public void salvar(Estado estado) throws Exception {
		Session sessao = null;
		Transaction tx = null;

		try {
			sessao = HibernateUtils.getSession();
			tx = sessao.beginTransaction();
			sessao.save(estado);
			tx.commit();

		} catch (Exception e) {
			tx.rollback();
			e.printStackTrace();
		} finally {
			if(sessao != null){
				try {
					sessao.close();					
				} catch (Exception e2) {
					e2.printStackTrace();
				}
			}
		}

	}


	@SuppressWarnings("unchecked")
	public List<Estado> listar(){

		List<Estado> lista = new ArrayList<Estado>();
		Session sessao = null;
		Transaction tx = null;

		try {
			sessao = HibernateUtils.getSession();
			tx = sessao.beginTransaction();
			lista = sessao.createCriteria(Estado.class).list();

		} catch (Exception e) {
			tx.rollback();
			e.printStackTrace();
		} finally {
			if(sessao != null){
				try {
					sessao.close();					
				} catch (Exception e2) {
					e2.printStackTrace();
				}
			}
		}
		return lista;
	}

	public Estado load(Integer id) throws Exception {
		Estado result = null;
		Session session = HibernateUtils.getSessionFactory().openSession();
		try {
			System.out.println(session.isOpen());
			result = (Estado) session.load(Estado.class, id);
		} 
		catch (Exception e) {
			session.getTransaction().rollback();
			throw new Exception("Erro ao carregar o Estado. Tente novamente.");
		} finally {
			session.close();
		}
		return result;
	}

}

/*public Papel Select(String pk) throws Exception{ 
Session session = factory.openSession(); 
Papel papel = (Papel)session.load(Papel.class, pk); 
Papel ret = new Papel(); 
ret.setNome(papel.getNome()); 
ret.setDescricao(papel.getDescricao()); 
session.flush(); 
session.close(); 
return ret; 
} 
 */




